#import "@preview/fletcher:0.5.1" as fletcher: diagram, node, edge
#set page(height: auto, width: auto, fill: white)
#diagram(
  node-stroke: 1pt,
  node((-1, 1), [$X$], name: <x>),
  edge("-"),
  node((to: <x>, rel: (-60deg, 1)), [$Y$], name: <y>),
  edge((rel: (150deg, 0.5)), "-"),
  edge((rel: (90deg, 0.5)), "-"),
  edge((rel: (30deg, 0.5)), "-"),
  edge((rel: (-120deg, 0.5)), "-"),
  node((to: <x>, rel: (0deg, 1)), [$Z$], name: <z>),
  edge((rel: (0deg, 0.5)), "-"),
  edge((rel: (90deg, 0.5)), "-"),
  edge((rel: (45deg, 0.5)), "-"),
  edge(<z>, <y>, "-"),
  node(snap: -1, name: <left>, enclose: (<y>, <z>), stroke: none),
  node((to: <y>, rel: (4, 0)), [$Y$], name: <y2>),
  edge((rel: (150deg, 0.5)), "-"),
  edge((rel: (90deg, 0.5)), "-"),
  edge((rel: (30deg, 0.5)), "-"),
  edge((rel: (-120deg, 0.5)), "-"),
  node((to: <y2>, rel: (60deg, 1)), [$Z$], name: <z2>),
  edge((rel: (0deg, 0.5)), "-"),
  edge((rel: (90deg, 0.5)), "-"),
  edge((rel: (45deg, 0.5)), "-"),
  edge(<y2>, <z2>, "-"),
  node(snap: -1, name: <right>, enclose: (<y2>, <z2>), stroke: none),
  edge((to: <left>, rel: (1, 0)), (to: <right>, rel: (-1, 0)), "=>", [Rake(X)]),
)
